/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package bpmlab.shift.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author Mikael Lima
 */
@Entity
@Table(name = "processo")
public class Processo implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Long id;
    @Embedded
    private Lote lote;
    @Embedded
    private Secagem secagem;
    @Embedded
    private Trituracao trituracao;
    @Embedded
    private Pelotizacao pelotizacao;
    @Embedded
    private Embalagem embalagem;
    @ManyToOne
    private Localizacao atual;
    @OneToMany(mappedBy = "processo", cascade = CascadeType.ALL)
    private List<Caracterizacao> caracterizacoes;
    @OneToMany(mappedBy = "processo", cascade = CascadeType.ALL)
    private List<Enriquecimento> enriquecimentos;
    @OneToMany(mappedBy = "processo", cascade = CascadeType.ALL)
    private List<Transporte> transportes;
    @OneToMany(mappedBy = "processo", cascade = CascadeType.ALL)
    private List<Produto> produtos;
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Lote getLote() {
        return lote;
    }

    public void setLote(Lote lote) {
        this.lote = lote;
    }

    public Localizacao getAtual() {
        return atual;
    }

    public void setAtual(Localizacao atual) {
        this.atual = atual;
    }

    public Secagem getSecagem() {
        return secagem;
    }

    public void setSecagem(Secagem secagem) {
        this.secagem = secagem;
    }

    public Trituracao getTrituracao() {
        return trituracao;
    }

    public void setTrituracao(Trituracao trituracao) {
        this.trituracao = trituracao;
    }

    public Pelotizacao getPelotizacao() {
        return pelotizacao;
    }

    public void setPelotizacao(Pelotizacao pelotizacao) {
        this.pelotizacao = pelotizacao;
    }

    public Embalagem getEmbalagem() {
        return embalagem;
    }

    public void setEmbalagem(Embalagem embalagem) {
        this.embalagem = embalagem;
    }

    public List<Caracterizacao> getCaracterizacoes() {
        if (caracterizacoes == null) {
            caracterizacoes = new ArrayList<>();
        }
        return caracterizacoes;
    }

    public void setCaracterizacoes(List<Caracterizacao> caracterizacoes) {
        this.caracterizacoes = caracterizacoes;
    }

    public List<Enriquecimento> getEnriquecimentos() {
        if (enriquecimentos == null) {
            enriquecimentos = new ArrayList<>();
        }
        return enriquecimentos;
    }

    public void setEnriquecimentos(List<Enriquecimento> enriquecimentos) {
        this.enriquecimentos = enriquecimentos;
    }

    public List<Transporte> getTransportes() {
        if (transportes == null) {
            transportes = new ArrayList<>();
        }
        return transportes;
    }

    public void setTransportes(List<Transporte> transportes) {
        this.transportes = transportes;
    }

    public List<Produto> getProdutos() {
        if (produtos == null) {
            produtos = new ArrayList<>();
        }
        return produtos;
    }

    public void setProdutos(List<Produto> produtos) {
        this.produtos = produtos;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 53 * hash + (int) (this.id ^ (this.id >>> 32));
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Processo other = (Processo) obj;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Processo{" + "id=" + id + '}';
    }

}
